Apache Tapestry-তে Event Handlers এবং Listeners এমন মেকানিজম যা ব্যবহারকারীর ইনপুট বা অন্য কোনো কার্যক্রমের প্রতিক্রিয়া হিসেবে অ্যাপ্লিকেশনের মধ্যে ক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি টেমপ্লেট এবং জাভা ক্লাসের মধ্যে ইন্টিগ্রেশন এবং ইউজার ইন্টারঅ্যাকশন হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Event Handlers এবং Listeners কি?
- Event Handlers:
Tapestry-তে Event Handlers ব্যবহারকারী বা সিস্টেমের কোনো নির্দিষ্ট ইভেন্টের জন্য ক্রিয়াশীল হয়। এটি সাধারণত একটি কম্পোনেন্টের বা পেজের উপর কোনও ব্যবহারকারীর ক্রিয়া (যেমন, বাটন ক্লিক, ফর্ম সাবমিট) ট্রিগার করার সময় ডিফাইন করা হয়। - Listeners:
Listeners হলো এমন মেথড বা ফাংশন যা একটি নির্দিষ্ট ইভেন্টের জন্য শোনার কাজ করে এবং সেই ইভেন্টটি ঘটলে এটি কল হয়। এটি Tapestry এর মধ্যে ইভেন্ট হ্যান্ডলিং এর কাজকে সম্পন্ন করে।
Event Handlers এবং Listeners কিভাবে কাজ করে?
Tapestry-তে ইভেন্ট হ্যান্ডলিং সাধারনত page বা component এর সাথে সম্পর্কিত ইভেন্টের জন্য কোড পরিচালনা করার মাধ্যমে করা হয়। যখন কোনো ইভেন্ট ট্রিগার হয়, তখন নির্দিষ্ট listener method কল করা হয় যা ইভেন্টের জন্য নির্দিষ্ট কাজ সম্পন্ন করে।
Event Handler এবং Listener মেথডের সিনট্যাক্স
Event Handler:
Event Handler সাধারণতon<event>ফরম্যাটে লেখা হয়। যেমন, একটি বাটনে ক্লিক করার জন্যonClickইভেন্ট হ্যান্ডলার ব্যবহার করা যায়।public Object onClick() { // বাটন ক্লিক হওয়ার পর যে কাজ করতে চান তা এখানে লিখুন return SuccessPage.class; // এই পেজে রিডাইরেক্ট হবে }Event Listener:
ইভেন্ট লিসেনার মেথড সাধারণত কোনো নির্দিষ্ট ইভেন্টের জন্য তৈরি করা হয়, যেমনonActivateবাonPassivate।public void onActivate() { // পেজ অ্যাকটিভেট হওয়ার সময় যে কাজ করতে চান তা এখানে লিখুন }
Event Handling উদাহরণ
ধরা যাক, আপনি একটি লগইন ফর্ম তৈরি করতে চান, যেখানে ব্যবহারকারী যদি সঠিক তথ্য প্রদান করে, তাহলে তাকে হোম পেজে রিডাইরেক্ট করা হবে। এই ক্ষেত্রে, একটি Event Handler ব্যবহার করতে হবে।
HTML টেমপ্লেট (login.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"> <head> <title>Login Form</title> </head> <body> <h2>Login</h2> <form> <t:label value="Username" for="username" /> <t:textfield value="username" t:id="username" /> <t:label value="Password" for="password" /> <t:passwordfield value="password" t:id="password" /> <t:button value="Login" t:id="loginButton" /> </form> </body> </html>Java ক্লাস (Login.java):
package com.example.pages; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.ioc.annotations.Inject; public class Login { @Property private String username; @Property private String password; @SessionState private boolean loggedIn; // Login action public Object onSuccessFromLoginForm() { if ("admin".equals(username) && "password".equals(password)) { loggedIn = true; // User is logged in return Home.class; // Redirect to home page } else { return Login.class; // Stay on login page if credentials are wrong } } }এখানে:
onSuccessFromLoginForm()হল একটি Event Handler যা লগইন ফর্মটি সফলভাবে সাবমিট হলে কল হয়। এই মেথডটি ইউজারের ইনপুট যাচাই করে এবং সঠিক হলে হোম পেজে রিডাইরেক্ট করে, অন্যথায় লগইন পেজে থাকে।
Commonly Used Events
onActivate:
যখন পেজ অ্যাকটিভেট হয়, তখনonActivate()ইভেন্ট কল হয়। এটি সাধারণত পেজ লোড হওয়ার সময় ডেটা ফেচ করতে ব্যবহার হয়।public void onActivate() { // When the page is activated, perform necessary actions }onPassivate:
যখন পেজ বা কম্পোনেন্টটি আউটপুটে থাকে, তখনonPassivate()কল হয়। এটি সাধারণত পেজ স্টেট সংরক্ষণ করতে ব্যবহৃত হয়।public void onPassivate() { // Save state before passivation }onEvent:
নির্দিষ্ট UI component-এর জন্য ইভেন্ট পরিচালনা করতেonEvent()ব্যবহার করা হয়, যেমন button click।public Object onEventFromButton(String event) { // Perform some action on event return null; }
Event Handling-এ Parameters ব্যবহার
Tapestry ইভেন্টের সাথে প্যারামিটারও পাস করতে পারে। উদাহরণস্বরূপ, আপনি যদি একটি বাটনের ক্লিক ইভেন্টে প্যারামিটার পাস করতে চান:
public Object onClickFromSubmitButton(String parameter) {
// Parameter ব্যবহার করে নির্দিষ্ট লজিক প্রয়োগ করা
return SuccessPage.class;
}
এখানে, parameter প্যারামিটারটি ইভেন্ট ট্রিগার করার সময় পাঠানো হবে।
সারাংশ
Event Handlers এবং Listeners Tapestry অ্যাপ্লিকেশনগুলির ইভেন্ট-ড্রিভেন আচরণ নিশ্চিত করতে ব্যবহৃত হয়। Event Handlers ব্যবহারকারী বা সিস্টেমের কোনো নির্দিষ্ট ক্রিয়ার (যেমন, বাটন ক্লিক বা ফর্ম সাবমিট) প্রতিক্রিয়া হিসেবে কার্যক্রম সম্পাদন করে, এবং Listeners সেই ইভেন্টগুলোর শোনার কাজ করে। Tapestry-তে ইভেন্ট হ্যান্ডলিং সহজ এবং নমনীয়, যা ডেভেলপারদের দ্রুত এবং কার্যকর অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Read more